1. The Field of the Invention
The invention relates to the field of storage systems and more particularly to storage controller firmware for redundant disk arrays.
2. The Relevant Art
A major concern with current large-scale computer systems is the reliability of data storage within the computer systems. In response to this concern, manufacturers have produced storage systems known as redundant arrays of independent disks (RAID). Raid systems use a plurality of disk drives arranged in a manner that creates redundancy of stored data.
Two aspects of storage system reliability are of utmost importance, availability and accessibility. Data availability requires data to be stored at least on a primary drive, stored on a mirror drive, or encoded on multiple drives in order to be considered available to a host system. The data is considered more available as the number of distinct exact or encoded copies of the data is increased. Thus, availability is dependant upon redundancy.
Data accessibility addresses the capability of a host system to access available stored data by either directly retrieving the data from a primary or mirror drive or by regenerating the same data from encoded information on certain other drives or drive stripes through parity error-detecting and error-correcting codes (ECC).
Over time, it is often required to update the firmware of the individual disk drives within the array storage system. The new firmware may be used to reduce data access time, to boost disk drive performance, or to increase other aspects of reliability of the overall array storage system.
One difficulty currently experienced in conjunction with the disk drive firmware update process is a consequence of the relatively long period of time required to perform the firmware update. During the time in which the disk drive firmware is being updated, the disk drive is typically unavailable to service host I/O requests. This can be critical to mass storage systems that are designed to operate continually.
One manner in which the prior art has attempted to deal with this problem involves the use of a specialized device driver within the host system. This specialized device driver is configured to hold the host I/O commands until the controller is ready to accept the commands upon completion of the drive update. This solution poses a significant problem in that the proprietary device driver exists within the host system and is separate from the actual array storage system. Additionally, the proprietary device drivers may be incompatible with other existing (legacy) components within the storage area network (SAN) system.
An alternate attempted solution involves the use of a proprietary disk drive configured to continue accepting host I/O commands throughout the drive upgrade in a manner transparent to the user. Once again, however, the proprietary disk drives may be incompatible with other legacy components within the SAN system.
A restriction common to both prior art arrangements is that no prior knowledge of the update can be assumed on the part of non-proprietary host systems or disk drives. Moreover, there is no guarantee of availability or accessibility of the disk drives during the disk drive firmware upgrade in non-proprietary systems and in systems comprised of both proprietary and non-proprietary components.
Therefore, what is needed is a method and system in which a storage system controller is capable of accepting and completing host I/O commands in a reliable and non-disruptive manner during a disk drive firmware upgrade process on a distributed data storage system. Such a method and system would be even more advantageous if it were compatible with legacy host systems and disk drives. Such a method and system would also be beneficial if it made allowances for individual or multiple disk drives to be upgraded simultaneously in order to decrease the overall time required to upgrade all of the drives.